/**
 * https://leetcode-cn.com/problems/sub-sort-lcci/
 * 部分排序, 找出索引m和n，只要将索引区间[m,n]的元素排好序，整个数组就是有序的
 * @param array
 */
const subSort = (array: number[]): number[] => {
  const len = array.length;
  // 长度小于2, 不用排序
  if (len < 2) return [-1, -1];

  let max = array[0],
    li = -1;
  // 从左往右扫, 只要有比max大的, 更新max, 只要有比max小的, 更新该索引
  for (let i = 1; i < len; i++) {
    if (array[i] >= max) max = array[i];
    // 该位置小于max, 更新该位置
    else li = i;
  }

  let min = array[len - 1],
    ri = -1;
  // 从右往左扫, 只要右比min小弟, 更新min, 只要有比min大的, 更新索引即可
  for (let i = len - 2; i >= 0; i--) {
    if (array[i] <= min) min = array[i];
    else ri = i;
  }

  return [ri, li];
};

const a = [1, 2, 4, 7, 10, 11, 7, 12, 6, 7, 16, 18, 19];

console.log(subSort(a));

// export {}
